package com.itcam.maker.template.model;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 模板生成器文件配置类
 * 该类用于配置模板生成器所需的文件信息
 */
@Data
public class TemplateMakerFileConfig {

    /**
     * 文件信息配置列表
     * 包含了模板生成器所需的所有文件的配置信息
     */
    private List<FileInfoConfig> files;

    /**
     * 文件组配置
     * 用于配置文件组的条件、键和名称
     */
    private FileGroupConfig fileGroupConfig;

    /**
     * 文件信息配置内部类
     * 该类用于配置单个文件的详细信息
     */
    @NoArgsConstructor
    @Data
    public static class FileInfoConfig {

        /**
         * 文件路径
         * 该路径指定了文件在系统中的位置
         */
        private String path;

        /**
         * 文件组条件
         * 用于指定文件组的条件
         */
        private String condition;

        /**
         * 文件过滤器配置列表
         * 包含了对该文件进行过滤的所有配置信息
         */
        private List<FileFilterConfig> filterConfigList;
    }

    /**
     * 文件组配置内部类
     * 该类用于配置文件组的详细信息
     */
    @Data
    public static class FileGroupConfig {

        /**
         * 文件组条件
         * 用于指定文件组的条件
         */
        private String condition;

        /**
         * 文件组键
         * 用于指定文件组的键
         */
        private String groupKey;

        /**
         * 文件组名称
         * 用于指定文件组的名称
         */
        private String groupName;
    }
}

